package com.ithema;

import jdk.dynalink.beans.StaticClass;

import java.util.ArrayList;
import java.util.Iterator;
import java.util.function.Consumer;

/**
 * @ProjectName: shixun DaErXia
 * @Titile: ArrayListDemo
 * @Author: 雨
 * @Description: TODO
 * 演示ArrayList的用法
 * 1.构造函数
 *  ArrayList()  ---默认初始容量为10的空列表
 *
 *  2.成员方法
 *   add()
 *
 */
public class ArrayListDemo {
    public static void main(String[] args){
        //1.创建ArrayList对象
        //底层赋值了一个空数组
        ArrayList<String> list = new ArrayList<String>();
        //往ArrayList集合中添加数据
        list.add("zhangsan");//添加一个数据，数组尾部
        list.add(0,"list");//添加一个数据，再数组的指定位置
        // 获取数据
        String s=list.get(1);
        System.out.println(s);
        //修改数据
        list.set(0,"wangwu");
        list.remove(1);

        list.add("lisi");
        list.add("wangwu");
        list.add("zhaoliu");
        list.add("zhangsan");

        System.out.println(list);
        System.out.println("-------------集合遍历方法1----------");

        //1.for循环的形式
        for (int i=0;i<list.size();i++){
            String obj=list.get(i);
            System.out.println(obj);
        }
        System.out.println("-------------集合遍历方法2----------");
        //2.增强for循环的语法形式
        for (String obj:list){
            System.out.println(obj);
        }
        System.out.println("-------------集合遍历方式3----------");
        //3.迭代器的形式
        Iterator<String> iterator = list.iterator();
        while (iterator.hasNext()){
            String next = iterator.next();//list.next.varlist.
            System.out.println(next);
        }
        System.out.println("-------------集合遍历方式4----------");
        //lambda表达方式的方法
        //Lambda表达式本身就是一个函数
        list.forEach(System.out::println);
        //f(x)->ax+b

        list.forEach(new Consumer<String>() {
            @Override
            public void accept(String s) {
                System.out.println(s);
            }
        });
        list.forEach(name-> System.out.println(name));
        list.forEach(System.out::println);

    }
}
